package com.ruoyi.hualian.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.hualian.domain.HlTimingPulley;
import com.ruoyi.hualian.domain.ResultBom;

import javax.servlet.http.HttpServletResponse;

/**
 * 同步轮Service接口
 * 
 * @author hujian
 */
public interface IHlTimingPulleyService 
{
    /**
     * 根据集合插入数据库
     * @param hlTimingPulleyList 集合
     * @return 结果
     */
    int insertList(List<HlTimingPulley> hlTimingPulleyList);

    /**
     * 根据已知信息查询具体对象信息
     * @param hlTimingPulley 已知信息
     * @return 具体对象信息
     */
    HlTimingPulley selectOne(HlTimingPulley hlTimingPulley);

    /**
     * 查询同步轮类型集合
     */
    List<String> selectTpTypeList();

    /**
     * 根据前端参数查询同步轮齿数集合
     */
    List<String> selectTpBandwidthListForParameter(String parameter);

    /**
     * 同步轮Excel模板导入数据库
     *
     * @param hlTimingPulleys Excel模板生成集合
     * @param containBK 材质是否含有B·K
     * @param insertDatabase 数据是否插入数据库
     * @return 结果
     */
    AjaxResult excelTimingPulley(List<HlTimingPulley> hlTimingPulleys, Boolean containBK, Boolean insertDatabase);

    /**
     * 华链同步轮及相关产品成本和利润计算
     *
     * @param commodityCode   商品编码
     * @param bandwidthW 带宽W
     * @param bandwidthL 带宽L
     * @param consolePrinting 是否输出控制台打印日志
     * @return 结果
     */
    AjaxResult costPrice(String commodityCode, BigDecimal bandwidthW, BigDecimal bandwidthL, Boolean consolePrinting, String authority);

    /**
     * 往ERP系统导入商品数据
     */
    String commodityImportErp(String filePath, String fileName, Boolean containBK, HttpServletResponse response) throws Exception;

    /**
     * ERP系统BOM表批量导入功能生成材料Excel表
     * 材料表
     */
    Map<String, Object> bomMaterialImportErp(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * ERP系统BOM表批量导入功能生成挡圈Excel表
     * 挡圈表
     */
    Map<String, Object> bomRingImportErp(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * ERP系统BOM表批量导入功能生成[材料、挡圈]Excel表
     * 材料表、挡圈表
     */
    String bomImportErp(String materialFilePath, String materialFileName, String ringFilePath, String ringFileName, HttpServletResponse response) throws Exception;

    /**
     * 根据商品编码生成ERP系统具体的所需要的商品信息
     */
    String generateErpCommodityCode(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * 同步轮类型转换Excel
     */
    String typeConvertExcel(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * 同步轮价格查询
     */
    String typePriceExcel(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * 采购订单挡边价格补充
     */
    String purchaseFlangeProblem(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * 采购订单入库Excel表生成
     */
    String purchaseReceipt(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * 怡和达带齿惰轮导入数据库
     */
    AjaxResult yiHeDaIg(String filePath, String fileName, HttpServletResponse response);

    /**
     * 怡和达同步轮类型转换网站
     */
    AjaxResult yiHeDaTypeConvertWebsite(String yiHeDaTypeCommodity);

    /**
     * 米思米同步轮导入数据库
     */
    AjaxResult miSiMiTp(String filePath, String fileName, HttpServletResponse response);

    /**
     * 米思米同步轮类型转换网站
     */
    AjaxResult miSiMiTypeConvertWebsite(String miSiMiTypeCommodity);

    /**
     * 米思米带齿惰轮导入数据库
     */
    AjaxResult miSiMiIg(String filePath, String fileName, HttpServletResponse response);

    /**
     * 米思米同步轮类型转换
     */
    String miSiMiTypeConvert(String filePath, String fileName, HttpServletResponse response) throws Exception;

    /**
     * 爱安特同步轮类型转换网站
     */
    AjaxResult aiAnTeTypeConvert(String aiAnTeTypeCommodity);

    /**
     * 上隆同步轮类型转换网站
     */
    AjaxResult shangLongTypeConvert(String shangLongTypeCommodity);

    /**
     * 三益同步轮类型转换网站
     */
    AjaxResult sanYiTypeConvert(String sanYiTypeCommodity);

    /**
     * 陌生型号类型转换网站
     */
    AjaxResult strangeTypeConvertWebsite(String strangeTypeCommodity);

    /**
     * 获取货期
     */
    AjaxResult getDeliveryTime(String deliveryTime);

    /**
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     */


    /**
     * 查询同步轮
     * 
     * @param tpId 同步轮主键
     * @return 同步轮
     */
    public HlTimingPulley selectHlTimingPulleyByTpId(Long tpId);

    /**
     * 查询同步轮列表
     * 
     * @param hlTimingPulley 同步轮
     * @return 同步轮集合
     */
    public List<HlTimingPulley> selectHlTimingPulleyList(HlTimingPulley hlTimingPulley);

    /**
     * 新增同步轮
     * 
     * @param hlTimingPulley 同步轮
     * @return 结果
     */
    public int insertHlTimingPulley(HlTimingPulley hlTimingPulley);

    /**
     * 修改同步轮
     * 
     * @param hlTimingPulley 同步轮
     * @return 结果
     */
    public int updateHlTimingPulley(HlTimingPulley hlTimingPulley);

    /**
     * 批量删除同步轮
     * 
     * @param tpIds 需要删除的同步轮主键集合
     * @return 结果
     */
    public int deleteHlTimingPulleyByTpIds(Long[] tpIds);

    /**
     * 删除同步轮信息
     * 
     * @param tpId 同步轮主键
     * @return 结果
     */
    public int deleteHlTimingPulleyByTpId(Long tpId);
}
